#ifndef GAME_H
#define GAME_H

#include <QWidget>
#include "map.h"
#include "person.h"
#include "postion.h"
#include <QPaintEvent>
#include <QPainter>
#include <QKeyEvent>
#include <QDebug>
#include <QFont>
#include <QPen>
#include <synchapi.h>
#define SCREEN_WIDTH 960 // 屏幕宽度
#define SCREEN_HEIGHT 768 // 屏幕高度
#define LINE 9 // 地图行数
#define COLUMN 12 // 地图列数
#define SIZE 61 // 格子（地图上墙，箱子...）尺寸
#define X_SHIFT 110 // x偏移量
#define Y_SHIFT 50 // y偏移量
#define BLACKGROUND_PATH ":/fileofhomework/background.jpg" // 背景图片
#define WALL_PATH ":/fileofhomework/brick.png" // 墙图片
#define FLOOR_PATH ":/fileofhomework/background.jpg" // 空地图片
#define DES_PATH ":/fileofhomework/goal.png" // 目的图片
#define MAN_PATH ":/fileofhomework/smile.png" // 人图片
#define MAN_WIN "://fileofhomework/win.png"//胜利图片
#define MAN_LOSE "://fileofhomework/114514.png"//失败图片
#define BOX_PATH ":/fileofhomework/box.png" // 箱子图片
#define BOX_1_PATH ":/fileofhomework/box.png" // 箱子推到指定位置图片
#define ATK ":/fileofhomework/attack.png"//准备攻击图片
#define HAND ":/fileofhomework/hand.png"//手图片
#define JI ":/fileofhomework/angry.png"//急了图片
#define BENG":/fileofhomework/beng.png"//流汗黄豆
extern int map[4][LINE][COLUMN];

namespace Ui {
class game;
}

class game : public QWidget
{
    Q_OBJECT

public:
    explicit game(QWidget *parent = nullptr,int level=1);
    ~game();
    game(QWidget);
    void initmap();
    void init();
    void gameControl(enum Direction);
    void changeMap(int line, int column, enum Map);
    bool isOver();

private:
    int condition=0;
    bool over=0;
    bool chouxiang=0;
    bool ji=0;
    int dir=2;
    int MAX_STEP;
    Ui::game *ui;
    int level;
    int map_copy[LINE][COLUMN];//当前关卡地图的复制
    struct Person man; // 人的位置
    struct Postion pre_pos; // 之前的位置
    int step;//计步器
protected:
    void paintEvent(QPaintEvent *);
    void keyPressEvent(QKeyEvent *);
public slots:
    void gameOverControl();
    void gameSuccessControl();
signals:
    void change();
    void gameover();
    void gamesuccess();
};

#endif // GAME_H
